package com.byl.sdk.gson;

import com.google.gson.*;

import java.util.List;
import java.util.Map;

/**
 * Created by niu on 2018/3/9.
 */
public class GsonUtils {

    private static Gson gson;

    private static JsonParser jsonParser = new JsonParser();

    /**
     * 将javabean转换成json
     *
     * @param obj
     * @return
     */
    public static String beanToJson(Object obj) {
        return toJson(obj);
    }

    /**
     * 将List 转换成Json
     *
     * @param list
     * @return
     */
    public static String listToJson(List list) {
        return toJson(list);
    }

    /**
     * 将Map转换成json
     *
     * @param map
     * @return
     */
    public static String mapToJson(Map map) {
        return toJson(map);
    }

    /**
     * 将字符串转换成json对象
     *
     * @param jsonStr
     * @return
     */
    public static JsonObject toJsonObject(String jsonStr) {
        return jsonParser.parse(jsonStr).getAsJsonObject();
    }

    /**
     * 将字符串转换成json数组
     *
     * @param jsonStr
     * @return
     */
    public static JsonArray toJsonArray(String jsonStr) {
        return jsonParser.parse(jsonStr).getAsJsonArray();
    }


    /**
     * 将对像转换为json字符串
     *
     * @param obj 要转换为json 的javabean  map  list 等
     * @return json字符串
     */
    private static String toJson(Object obj) {
        return getGson().toJson(obj);
    }

    public static Gson getGson() {
        if (null == gson) {
            gson = new GsonBuilder()
                    .serializeNulls()
                    .registerTypeAdapterFactory(new NullStringToEmptyAdapterFactory<Object>())
                    .create();
        }
        return gson;
    }
}
